//
// Copyright (C) 2011, All Rights Reserved, by
// EMC Corporation, Hopkinton, MA.
//
// This software is furnished under a license and may be used and copied
// only  in  accordance  with  the  terms  of such  license and with the
// inclusion of the above copyright notice. This software or  any  other
// copies thereof may not be provided or otherwise made available to any
// other person. No title to and ownership of  the  software  is  hereby
// transferred.
//
// The information in this software is subject to change without  notice
// and  should  not be  construed  as  a commitment by EMC Corporation.
//
// EMC assumes no responsibility for the use or  reliability  of its
// software on equipment which is not supplied by EMC.
//

//
// meminit.hxx - routines for initializing the EVM memory subsystem
//

#ifndef MEMINIT_HXX
#define MEMINIT_HXX

#include <memowner.hxx> // Memory_Owner
#include <address.h>    // addr_t
#include <basictypes.h> // ulong32

#define WHOLE_TLB_FLUSH_ADDR ((addr_t)0xFFFFffffFFFFffffUL)

extern addr_t TableStart;
extern Memory_Owner HoleOwner;
extern Memory_Owner DARTimageOwner;

extern "C" void MEMinit(void);
extern void lock_page_table_mutex(void);
extern void unlock_page_table_mutex(void);
extern ulong32 page_table_mutex_num_locks(void);
extern "C" void flushTLBallProcs(addr_t, unsigned int);
extern "C" void flushTLBCache(void);
extern "C" void release_old_PDEs(void);

#endif // !MEMINIT_HXX
